<?php

class ErrorController extends Zend_Controller_Action
{

        public function  init()
        {
            $this->_helper->_acl->allow('Administrador',null);
        }

	public function indexAction()
	{
            $this->_redirect('error/error');
	}

	public function errorAction()
	{
		$errors = $this->_getParam('error_handler');

		switch ($errors->type) {
			case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ROUTE:
			case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_CONTROLLER:
			case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ACTION:

				// 404 error -- controller or action not found
				$this->getResponse()->setHttpResponseCode(404);
				$this->view->message = 'Page not found';
				break;
			default:
				// application error
				$this->getResponse()->setHttpResponseCode(500);
				$this->view->message = 'Application error';
				break;
		}

		// Log exception, if logger available
		if ($log = $this->getLog()) {
			$log->crit($this->view->message, $errors->exception);
		}

		// conditionally display exceptions
		if ($this->getInvokeArg('displayExceptions') == true) {
			$this->view->exception = $errors->exception;
		}

		$this->view->request   = $errors->request;
                if(Zend_Registry::isRegistered('sql')){
                        $sql = Zend_Registry::get('sql');
                        $this->view->sql = $sql->__toString();
                }
                else $this->view->sql = "";
	}

	public function getLog()
	{
                $bootstrap = $this->getInvokeArg('bootstrap');
                if ($bootstrap){
                    if (!$bootstrap->hasPluginResource('Log')) {
                            return false;
                    }
                    $log = $bootstrap->getResource('Log');
                    return $log;
                }
                else return null;
	}

	public function messageAction()
	{
		$e = My_Session_Namespace::get('exception');
		if (!is_object($e))
		{
			$e = new Exception('Ocorreu um erro inesperado');
		}
		$trace = $e->getTrace();
		foreach($trace as $id => $call)
		{
			$args = $call['args'];
			foreach($args as $arg)
			{
				if ($arg instanceof Zend_Controller_Request_Http)
				{
					break;
				}
			}
			if (arg instanceof Zend_Controller_Request_Http)
			{
				break;
			}
		}
                
		$this->view->assign('mensagem',$e->getMessage());
		$this->view->assign('voltar',"{$arg->getBaseUrl()}/{$arg->getModuleName()}/{$arg->getControllerName()}");
	}



}

